package org.spring.aop;

import java.lang.reflect.Method;

/**
 * 在调用方法之前调用的通知。
 * <p>
 * 除非抛出Throwable，否则此类通知不能阻止方法调用的进行。
 *
 * @author 李坤
 * @date 2022/4/19 14:53
 */
public interface MethodBeforeAdvice extends BeforeAdvice {

    /**
     * 在调用给定方法之前回调。
     *
     * @param target 方法调用的目标。可能是{@code null}。
     * @param method 被调用的方法
     * @param args   方法的参数
     *
     * @throws Throwable 如果此对象希望终止调用。如果方法签名允许，抛出的任何异常都将返回给调用者。否则，异常将被包装为运行时异常。
     */
    void before(Object target, Method method, Object[] args) throws Throwable;

}
